package concurrent;

//通过继承Thread类来创建线程类
//三个线程乱序执行, 通过不同的格式和线程名来区分
//继承的类里的成员变量是各自的,不共享
public class ExtendsThread1 extends Thread {
    private int i;
    // 重写run方法，run方法的方法体就是线程执行体
    public ExtendsThread1(String thdName) {
        this.setName(thdName);
    }

    @Override
    public void run() {
        for (; i < 10; i++) {
            // 当线程类继承Thread类时，直接使用this即可获取当前线程
            // Thread对象的getName()返回当前该线程的名字
            // 因此可以直接调用getName()方法返回当前线程的名
            if (getName().equals("thread3")) {
                System.out.println("\t\t" + getName() + "工作, 输出" + i);
            } else {
                System.out.println("\t" + getName() + "工作, 输出" + i);
            }
        }
    }

    public static void main(String[] args) {
//        System.out.println("CPU个数：" + Runtime.getRuntime().availableProcessors());
        Thread.currentThread().setName("主线程");
        // 创建、并启动第一条线程
        new ExtendsThread1("thread2").start();
        // 创建、并启动第二条线程
        new ExtendsThread1("thread3").start();
        for (int i = 0; i < 3; i++) {
            // 调用Thread的currentThread方法获取当前线程
            System.out.println(Thread.currentThread().getName() + "输出" + i);
        }
    }
}

